네트워크 계층의 기능
네트워크 계층의 핵심 기능은 패킷을 출발지에서 목적지까지 전달하는 것이다.
주요 기능
- 패킷 전달: 출발지에서 목적지까지 데이터 전송
-
라우팅: 최적의 경로를 찾아 패킷 전달
- 네트워크의 구성 형태에 대한 정보는 라우팅 테이블에 보관
- 혼잡 제어: 네트워크에 패킷 수가 급증하는 혼잡 현상을 예방하거나 제거
- 단편화 및 재조립: 패킷이 네트워크 MTU보다 클 경우 나누어 전송 후 다시 조립
연결형 서비스와 비연결형 서비스
네트워크 계층이 전송 계층에 제공하는 서비스는 크게 두 가지다.
-
연결형 서비스: 패킷을 전송하기 전 송수신 호스트 사이에 연결 설정
- 경로가 최초 설정 시 고정 -> 모든 패킷이 같은 경로로 따라감 -> 도착 순서 보장
- 비연결형 서비스: 연결 설정없이 데이터를 패킷 단위로 전송
전송 계층에서 네트워크의 비연결형 서비스를 이용할 때는 자체적으로 오류 제어와 흐름 제어 기능을 더 많이 수행해야 한다.
비연결형 서비스를 이용해 패킷을 전송하면 패킷이 서로 다른 경로를 통해 수신 호스트로 전달되어 순서가 일정하지 않을 수 있다. -> 상위 계층인 전송 계층은 수신한 패킷의 순서를 재조정하는 기능이 필요하다.
혼잡 제어
흐름 제어가 송신 호스트와 수신 호스트의 논리적인 점대점 전송 속도를 다룬다면, 혼잡 제어는 더 넓은 관점에서 네트워크의 전송 능력 문제를 다룬다.
혼잡 발생의 가장 큰 원인은 네트워크 용량에 비해 전송 패킷이 많기 때문이다. 해결 방법
-
트래픽 관리(Traffic Shaping): 송신자가 전송 속도를 조절하여 네트워크의 부하를 줄이는 방식
- Leaky Bucket 등
- 혼잡이 발생한 경로를 피해 패킷을 전송
라우팅 프로토콜
라우팅은 패킷이 네트워크를 통해 이동하는 최적의 과정을 결정하는 과정 라우팅을 수행하는 장치가 라우터이며, 라우터는 라우팅 프로토콜을 이용해 경로를 설정
라우팅 방식
- 정적 라우팅: 관리자가 수동으로 경로 설정 -> 운영 중인 네트워크의 구성에 변화가 생기면 이에 적절하게 대처할 수 없다. -> 실시간 혼잡도를 반영할 수 없다.
- 동적 라우팅: 라우팅 프로토콜을 사용해 자동으로 경로 설정 -> 현재 네트워크 상황을 고려해 최적의 정보를 선택할 수 있다. -> 네트워크에 새로운 부하를 주어 성능에 부정적인 영향을 미친다.
동적 라우팅 방식을 사용하기 위해선 현재의 네트워크 링크 상태를 점검해 이를 새로운 경로 배정 시 적용해야 한다.
라우팅 테이블
패킷 전송 과정에서 라우터들이 적절한 경로를 쉽게 찾을 수 있도록 가장 기본적인 도구로 라우팅 테이블을 사용한다.
라우팅 테이블에 포함해야 하는 필수 정보는 (목적지 호스트, 다음 홉)의 조합이다. '목적지 호스트'까지 패킷을 전달하기 위해 어떤 이웃 호스트('다음 홉')으로 가야 하는지 알려주는 정보이다. 따라서 라우팅 테이블 정보는 네트워크에 연결된 모든 라우터에 존재한다.
최단 경로 라우팅
패킷이 목적지에 도달할 때까지 거치는 라우터 수, 즉 홉(hop)의 수가 최소화될 수 있도록 경로를 선택하는 방식
홉 수 외 거리 기준이 될 수 있는 요소
- 전송 지연 시간
- 전송 대역폭
- 통신 비용
거리 벡터 라우팅
라우터가 이웃 라우터와 라우팅 정보를 교환하는 방식
필수 정보
-
링크 벡터: 이웃 네트워크에 대한 연결 정보
-
각 네트워크와 연결하기 위해 할당한 라우터 포트 번호
링크 벡터 L(x) = [포트(1), 포트(2), 포트(3), ... , 포트(n)]
-
-
거리 벡터: 개별 네트워크까지의 거리 정보
-
일반적으로 최소 전송 지연 시간
거리 벡터 D(x) = [거리(1), 거리(2), 거리(3), ... , 거리(n)]
-
-
다음 홉 벡터: 개별 네트워크로 가기 위한 다음 홉 정보
다음 홉 벡터 H(x) = [홉(1), 홉(2), 홉(3), ... , 홉(n)]
IP 프로토콜
IP 프로토콜은 네트워크 계층에서 데이터를 패킷으로 나누어 전달하는 핵심 프로토콜이다. 모든 장치는 고유한 IP 주소를 가지고 있으며, 패킷은 송신지에서 목적지까지 IP 주소를 기반으로 전달된다.
특징
- 비연결형 서비스 제공
- 패킷을 분할/병합하는 기능 수행
- Best Effort 원칙에 따른 전송 기능 제공 -> 전송 패킷이 수신 호스트에 100% 도착하는 것을 보장하지 않는다. -> 상위 계층에서 전송 오류 문제를 고려해야 함
패킷 구조
| Version | Header Length | Type of Service | Total Length |
| Identification | Flags | Fragment Offset |
| Time to Live (TTL) | Protocol | Header Checksum |
| Source IP Address | Destination IP Address |
| Options | Data |- Version: IPv4(4) 또는 IPv6(6) 여부
- TTL(Time to Live): 패킷의 생존 시간 (0이 되면 폐기)
- Protocol: 상위 계층 프로토콜 (예: TCP=6, UDP=17)
- Source/Destination IP Address: 송신지 및 목적지 IP
- Header Checksum: 오류 검출
패킷 분할
데이터 링크 계층 프로토콜의 프레임은 크기가 프로토콜마다 다르다. 따라서 상위 계층에서 내려온 데이터를 데이터 링크 계층의 프레임 틀에 담을 수 있도록 분할하고, 수신 호스트에서는 이를 다시 재조립하는 작업을 수행한다.
IP 프로토콜의 분할 기능은 라우터의 좌우에 연결된 LAN이 서로 다를 수 있기 때문에 전송 경로에 위치한 라우터에 의해 수행된다.
분할 과정
- 송신지에서 패킷을 생성 → MTU(Maximum Transmission Unit)보다 크면 분할 필요
-
라우터가 패킷의 크기를 검사
- 패킷이 MTU보다 크면 분할 수행
-
패킷을 여러 개의 조각으로 나누어 전송
- 분할된 패킷은 각각 독립적인 IP 패킷으로 전달됨
- 목적지에서 패킷을 재조립하여 원래의 데이터 복원
DHCP 프로토콜
네트워크에 연결된 장치에게 자동으로 IP 주소와 기타 네트워크 설정을 제공하는 프로토콜 -> 자동으로 IP 주소 할당
동작 과정
| 단계 | DHCP 메시지 | 설명 |
|---|---|---|
| 1. Discovery | DHCPDISCOVER | 클라이언트 → 네트워크로 IP 요청 브로드캐스트 |
| 2. Offer | DHCPOFFER | DHCP 서버 → IP 주소 제안 |
| 3. Request | DHCPREQUEST | 클라이언트 → 제안된 IP 주소 요청 |
| 4. Acknowledgment | DHCPACK | DHCP 서버 → IP 주소 최종 할당 |